<?php
class EvolutionsController extends AppController {

	var $name = 'Evolutions';
	var $uses = array('Problem','Person','Evolution','PeopleProblem','Stateproblem','PeopleSign','PeopleVademecum','Adjunto','AdjuntosTmp','PeopleProduct','InsurancesProduct','InsurancesUser','InsurancesPerson','PeoplePractice','Result','Turn','Insurance');

    function beforeFilter () {
        parent::beforeFilter();

		// Aplico el Layout segun la Vista o si es AJAX
		if ($this->RequestHandler->isAjax()) {
			$this->layout = 'ajax';
		}else{
			// Cambio la Vista por la del Rol
			$this->layout = strtolower($this->Session->read('VistaActual'));
		}
    }


    
	function index($id_paciente = null, $archivados = null) {
		$this->Evolution->recursive = 0;

		if(!$archivados){
			$evolutions = $this->Evolution->find('all', array(
							'conditions' => array(
												'Evolution.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
												'Evolution.person_id' => $id_paciente,
												'NOT' => array ('Evolution.staterecord_id' => array('2','3'))
											),
							'order' => array('Evolution.fecha DESC', 'Problem.name'),
							'fields' => array('Evolution.id', 'Evolution.fecha', 'Evolution.person_id', 'Problem.name','Evolution.description','Evolution.created')
			) );

		}else{ // Para mostrar tambien los registros ARCHIVADOS
			$evolutions = $this->Evolution->find('all', array(
							'conditions' => array(
												'Evolution.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
												'Evolution.person_id' => $id_paciente,
												'NOT' => array ('Evolution.staterecord_id' => array('2'))
											),
							'order' => array('Evolution.fecha DESC', 'Problem.name'),
							'fields' => array('Evolution.id', 'Evolution.fecha', 'Evolution.person_id', 'Problem.name','Evolution.description','Evolution.created')
			) );
		}
		$this->set('archivados', $archivados);

		$this->set('evolutions', $evolutions);
		$this->set('id_paciente', $id_paciente);
		$this->layout = 'ajax';
	}

	function add($id_paciente = null) {

		$this->_accede('evoluciona_problemas');

		if (!empty($this->data)) {

			// Si no se selecciono ningun Problema
			if(empty($this->data['Evolution']['arregloProblemasSeleccionados'])){
				$this->Session->setFlash(__('Debe seleccionar al menos un Problema', true), 'default', array('class' => 'error-message'));
				$this->redirect('/people/view/'.$this->data['Evolution']['person_id'].'/3');
				exit;
			}


			// Defino la Fecha para todas las Evoluciones
			$fecha_evolucion = date("Y-m-d H:i:s");


			// Cargo todos los problemas asociados
			foreach($this->data['Evolution']['arregloProblemasSeleccionados'] AS $id_problema_seleccionada){


				// Si el Problema seleccionado no existe, lo cargo
				if($this->requestAction('/PeopleProblems/existeProblema/'.$this->data['Evolution']['person_id'].'/'.$id_problema_seleccionada) == "0"){

					$this->PeopleProblem->create();

					// Seteo datos que no vienen del Formulario
					$this->PeopleProblem->set(array(
						'person_id' => $this->data['Evolution']['person_id'],
						'problem_id' => $id_problema_seleccionada,
						'stateproblem_id' => $this->data['Evolution']['stateproblem_id'],
						'fecha_origen' => $this->data['PeopleProblem']['fecha_origen'],
						'client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
						'user_id' => $this->Auth->user('id'),
					));

					// Grabo cada Problema al Paciente
					$this->PeopleProblem->save();
				}

				$this->Evolution->create();

				// Seteo datos que no vienen del Formulario
				$this->Evolution->set(array(
					'fecha' => $fecha_evolucion,
					'client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
					'user_id' => $this->Auth->user('id'),
					'problem_id' => $id_problema_seleccionada,
				));


				// Grabo cada Evolucion
				if ($this->Evolution->save($this->data)) {
					$this->Session->setFlash(__('La evolución ha sido cargada', true));
				} else {
					$this->Session->setFlash(__('La evolución no ha sido cargada. Por favor, intente nuevamente.', true), 'default', array('class' => 'error-message'));
				}
			}

			$this->redirect('/people/view/'.$this->data['Evolution']['person_id'].'/3');
			exit;

/*
			// Si no se selecciono ningún problema de la lista y se escribio un problema nuevo
			if ($this->data['Evolution']['problem_id'] == "0" AND $this->data['Problem']['name'] <> "") { 

				$this->Problem->create();

				$this->Problem->set(array(
					'name' => $this->data['Problem']['name'],
					'user_id' => $this->Auth->user('id'),
				));
				// Grabo el nuevo Problema
				$this->Problem->save();

				// Obtengo el ID cargado
				$this->data['Evolution']['problem_id'] = $this->Problem->id;
			}

			// Asocio un Problema al Paciente automaticamente
			if(!$this->data['Evolution']['existe_problema_cargado']){

				$this->PeopleProblem->set(array(
					'person_id' => $this->data['Evolution']['person_id'],
					'problem_id' => $this->data['Evolution']['problem_id'],
					'stateproblem_id' => $this->data['Evolution']['stateproblem_id'],
					'fecha_origen' => $this->data['PeopleProblem']['fecha_origen'],
					'client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
					'user_id' => $this->Auth->user('id'),
				));
				$this->PeopleProblem->save();
			}
*/
		}

		if (!$id_paciente) {
			exit;
		}

		$people = $this->Person->find('list', array(
						'conditions' => array('Person.id' => $id_paciente),
						'fields' => array('Person.id', 'Person.full_name')
		) );


		$problemaspaciente = $this->PeopleProblem->find('all', array(
						'conditions' => array(
											'PeopleProblem.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
											'PeopleProblem.person_id' => $id_paciente,
											'NOT' => array ('PeopleProblem.stateproblem_id' => array('1')),
											'NOT' => array ('PeopleProblem.staterecord_id' => array('2','3'))
										),
						'order' => array('Problem.name'),
						'fields' => array('Problem.id', 'Problem.name')
		) );

		$stateproblem = $this->Stateproblem->find('list');

		$this->set('problemaspaciente', $problemaspaciente);
		$this->set('id_paciente', $id_paciente);
		$this->set('stateproblem', $stateproblem);
		$this->set(compact('problems', 'people'));
	}

	function archivar($id = null, $id_paciente = null, $estado = null) {
		if (!$id) {
			$this->Session->setFlash(__('Evolucion no valida', true), 'default', array('class' => 'error-message'));
			$this->redirect('/dashboards');
		}

		if (!$id_paciente) {
			$this->Session->setFlash(__('Paciente no valido', true), 'default', array('class' => 'error-message'));
			$this->redirect('/dashboards');
		}

		if (!$estado) {
			$this->Session->setFlash(__('Estado no valido', true), 'default', array('class' => 'error-message'));
			$this->redirect('/dashboards');
		}

		$this->Evolution->id = $id;
		$this->Evolution->set(array(
			'staterecord_id' =>  $estado,
			'user_id' => $this->Auth->user('id'),
		));

		if ($this->Evolution->save()) {
			$this->Session->setFlash(__('La Evolucion fue procesada.', true));
			$this->redirect('/people/view/'.$id_paciente.'/3');
		}
		$this->Session->setFlash(__('La Evolucion no pudo ser procesada', true), 'default', array('class' => 'error-message'));
		$this->redirect('/people/view/'.$id_paciente.'/3');
	}

	function mobile() {

		// Si existe una persona y un texto de evolucion, lo cargo
		if (!empty($this->params['form']['person_id']) AND !empty($this->params['form']['txt_evolucion']) ){

			// Si este header falla
			header('Content-Type: text/html; charset=UTF-8');

			$fecha_evolucion = date("Y-m-d H:i:s");	
			$id_problema_predeterminado = 872548016; // CONSULTA

			$this->Evolution->create();
			$this->Evolution->set(array(
				'fecha'       => $fecha_evolucion,
				'client_id'   => $this->Session->read('ClientesUsuarioLogueado.id'),
				'user_id'     => $this->Auth->user('id'),
				'problem_id'  => $id_problema_predeterminado,
				'description' => nl2br(utf8_encode(urldecode($this->params['form']['txt_evolucion']))),
				'person_id'   => $this->params['form']['person_id'],
			));
			$this->Evolution->save();

			echo "1|Ok";			
			exit;

		}else{
			if (empty($this->params['form']['person_id'])){
				echo "0|Paciente no asignado.";
				exit;
			}

			if (empty($this->params['form']['txt_evolucion'])){
				echo "0|No se pudo cargar la Evolución por estar vacia.";
				exit;
			}
		}

		$this->autoRender=false;		
	}

	function editEvolution($id = null) {

		if (!empty($this->params['form']['value']) AND $id){

			$this->Evolution->id = $id;

			// Si se pudo grabar
			if ($this->Evolution->saveField('description',$this->params['form']['value'])){
				echo $this->params['form']['value'];
			}else{ // Si no pudo
				echo "No se pudo guardar el cambio...";
			}
		}

		$this->autoRender=false;
	}

	function rapida($id_paciente = null, $turno_id = 0) {
		$this->_accede('evoluciona_problemas');


		$fecha_evolucion = date("Y-m-d H:i:s");	
		if (!empty($this->data)) {
			
			//---------------------------------------------------------------
			// Existe el id del turno?
			//---------------------------------------------------------------
			if (isset($this->data['Evolution']['turno_id'])) {
				$turno_id = $this->data['Evolution']['turno_id'];
			} else {
				$turno_id = 0;
			}
						
			// Defino la Fecha para la Evolución
			if ( isset($this->data['Evolution']['retorna']) and $this->data['Evolution']['retorna']=='dashboard') {
				//-----------------------------------------------------
				// le indica donde retornar, agregado para agregar el valor de la consulta desde el dashboard
				$retorno = 'dashboard';
				//pr($this->data); die();
			} else {
				$retorno = '';
			}

			// Flag que determina si al menos existe algo para cargar
			$evolucionActiva = false;
			$evolucion_grabada = false;
			//====================================================================
			// Creo la evolución si se cargo alguna descripcion
			//====================================================================

			if(!empty($this->data['Evolution']['description'])){

				// Se predetermina el Problema a utilizar
				if(empty($this->data['Evolution']['problema_evolucion'])){
					$this->data['Evolution']['problema_evolucion'][] = 872548016; // CONSULTA
				}
				
				foreach($this->data['Evolution']['problema_evolucion'] as $id_problema_predeterminado) {

					$this->Evolution->create();
					$this->Evolution->set(array(
						'fecha'       => $fecha_evolucion,
						'client_id'   => $this->Session->read('ClientesUsuarioLogueado.id'),
						'user_id'     => $this->Auth->user('id'),
						'problem_id'  => $id_problema_predeterminado,
						'description' => $this->data['Evolution']['description'],
						'person_id'   => $this->data['Evolution']['person_id'],
					));
					$this->Evolution->save();
				}
				$evolucion_grabada = true;

			}


			//====================================================================
			// Grabo Productos / Insurances
			//====================================================================
			if (isset($this->data['Productos']) and (!empty($this->data['Productos']))  ){

//pr($this->data['Productos']);	die();			
				foreach($this->data['Productos'] as $clave=>$valor) {
					
					if ($valor['actualiza']==1) {
						//--------------------------- Actualizo el valor en insurances_user
						$sql = 
						
						$InsurancesProduct = $this->InsurancesProduct->find('first', array(
											'conditions' => array(
													'InsurancesProduct.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
													'InsurancesProduct.user_id'   => $this->Auth->user('id'),
													'InsurancesProduct.insurance_user_id' => $valor['insurance_user_id'],
													'InsurancesProduct.product_id' => $valor['product_id'],
																)
															) 
													);
						$InsurancesProduct['InsurancesProduct']['importe'] = $valor['importe'];
						$this->InsurancesProduct->save($InsurancesProduct['InsurancesProduct']);	

					} elseif($valor['actualiza'] == 'crea') {
						// Guardo los datos en la ficha del paciente
						$InsurancePerson['id'] = 0;
						$InsurancePerson['insurance_id'] = $valor['insurance_id'];
						$InsurancePerson['person_id']    = $this->data['Evolution']['person_id'];
						$InsurancePerson['nombre_plan']  = $valor['plan'];
						$InsurancePerson['nro_afiliado'] = $valor['nro_afiliado'];
						$this->InsurancesPerson->save($InsurancePerson);

						// El medico tiene esa OS / Plan?
						$financiadores = $this->InsurancesUser->find('first', array(
										'conditions' => array(
															'InsurancesUser.client_id'    => $this->Session->read('ClientesUsuarioLogueado.id'),
															'InsurancesUser.user_id'      => $this->Auth->user('id'),
															'InsurancesUser.insurance_id' => $valor['insurance_id'],
															"InsurancesUser.plan"         => $valor['plan'],
														)
											) );
						if (empty($financiadores)){
							//-- No la tiene, se la agrego
							$this->InsurancesUser->create();
							$this->InsurancesUser->set(array(
								'id'             => 0,
								'insurance_id'   => $valor['insurance_id'],
								'plan'           => $valor['plan'],
								'client_id'      => $this->Session->read('ClientesUsuarioLogueado.id'),
								'user_id'        => $this->Auth->user('id'),
							));
							$this->InsurancesUser->save();
							$insurance_user_id = $this->InsurancesUser->getLastInsertID();

							$this->InsurancesProduct->create();
							$this->InsurancesProduct->set(array(
								'id'                => 0,
								'insurance_user_id' => $insurance_user_id,
								'product_id'        => $valor['product_id'],
								'importe'           => $valor['importe'],	
								'money_id'          => $valor['money_id'],	
								'client_id'         => $this->Session->read('ClientesUsuarioLogueado.id'),
								'user_id'           => $this->Auth->user('id'),
							));
							$this->InsurancesProduct->save();

						}	


					} elseif($valor['insurance_user_id'] == 0) {
						// No esta la asociacion en la grilla, entonces la creo
						$this->InsurancesUser->create();
						$this->InsurancesUser->set(array(
							'id'             => 0,
							'insurance_id'   => $valor['insurance_id'],
							'plan'           => $valor['plan'],
							'client_id'      => $this->Session->read('ClientesUsuarioLogueado.id'),
							'user_id'        => $this->Auth->user('id'),
						));
						$this->InsurancesUser->save();
						$insurance_user_id = $this->InsurancesUser->getLastInsertID();

						$this->InsurancesProduct->create();
						$this->InsurancesProduct->set(array(
							'id'                => 0,
							'insurance_user_id' => $insurance_user_id,
							'product_id'        => $valor['product_id'],
							'importe'           => $valor['importe'],	
							'money_id'          => $valor['money_id'],	
							'client_id'         => $this->Session->read('ClientesUsuarioLogueado.id'),
							'user_id'           => $this->Auth->user('id'),
						));
						$this->InsurancesProduct->save();

					}

					
					$xOS = $this->Insurance->read(null,$valor['insurance_id']);
					$valor['osname'] = $xOS['Insurance']['short_name'];
					
					
					$this->PeopleProduct->create();
					$this->PeopleProduct->set(array(
						'id'             => 0,
						'insurance_id'   => $valor['insurance_id'],
						'product_id'     => $valor['product_id'],
						'product_name'   => $valor['producto'],
						'os_name'        => $valor['osname'],
						'plan'           => $valor['plan'],
						'importe'        => $valor['importe'],
						'money_id'       => $valor['money_id'],	
						'person_id'      => $this->data['Evolution']['person_id'],
						'client_id'      => $this->Session->read('ClientesUsuarioLogueado.id'),
						'user_id'        => $this->Auth->user('id'),
						'staterecord_id' => '1'
					));
					$this->PeopleProduct->save();

					// Activo el Flag que determina que existe algo para cargar
					$evolucionActiva = true;
				}

			}



			//====================================================================
			// Grabo Signos Vitales, si existen
			//====================================================================
			if (isset($this->data['SignosVitales']) and (!empty($this->data['SignosVitales']))  ){
				
				foreach($this->data['SignosVitales'] as $clave=>$valor) {
					
					$fecha_sv = substr($valor['fecha'],6,4)."-".substr($valor['fecha'],3,2).'-'.substr($valor['fecha'],0,2).' 12:00:00';

					
					$this->PeopleSign->create();
					$this->PeopleSign->set(array(
						'fecha'          => $fecha_sv,
						'person_id'      => $this->data['Evolution']['person_id'],
						'client_id'      => $this->Session->read('ClientesUsuarioLogueado.id'),
						'user_id'        => $this->Auth->user('id'),
						'sign_id'        => $clave,
						'valor'          => $valor['valor'],
						'staterecord_id' => '1',
						'created'        => $fecha_evolucion
					));
					$this->PeopleSign->save();

					// Activo el Flag que determina que existe algo para cargar
					$evolucionActiva = true;
				}

				//====================================================================
				// Carga Automatica de IMC (Indice de Masa Corporal)
				//====================================================================

					// Consulto la ultima altura del Paciente
					$arreglo_altura = $this->requestAction('/signs/ultimosigno/11/'.$this->data['Evolution']['person_id']);

					$ultima_altura = $arreglo_altura['valor']; // Expresada en cm

					// Convierto la altura en metros
					$ultima_altura = $ultima_altura * 0.01;

					// Consulto el ultimo peso del Paciente
					$arreglo_peso = $this->requestAction('/signs/ultimosigno/10/'.$this->data['Evolution']['person_id']);
					$ultimo_peso = $arreglo_peso['valor'];
					$fecha_ultimo_peso = $arreglo_peso['fecha'];					

					// Actualizo el Signo Indice de Masa Corporal (Peso / Altura al cuadrado) si se cargo la Altura y el Peso
					if(!empty($ultima_altura) AND $ultima_altura != 0){
						$imc = ($ultimo_peso / ($ultima_altura * $ultima_altura));

						if($imc > 0){

							$this->PeopleSign->create();

							$this->PeopleSign->set(array(
								'client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
								'user_id' => $this->Auth->user('id'),
								'fecha' => $fecha_ultimo_peso,
								'valor' => $imc,
								'person_id' => $this->data['Evolution']['person_id'],
								'sign_id' => 15,
							));

							// Grabo el Signo IMC
							$this->PeopleSign->save();
						}
					}
				//====================================================================

			}

			//====================================================================			
			// Grabo Practicas, si existen
			//====================================================================			
			if (isset($this->data['Practicas']) and (!empty($this->data['Practicas']))  ){
				foreach($this->data['Practicas'] as $clave=>$valor) {

					$fecha_practica = substr($valor['fecha'],6,4)."-".substr($valor['fecha'],3,2).'-'.substr($valor['fecha'],0,2).' 12:00:00';

					$this->PeoplePractice->create();
					$this->PeoplePractice->set(array(
							'id'              => 0,
							'person_id'       => $this->data['Evolution']['person_id'],
							'client_id'       => $this->Session->read('ClientesUsuarioLogueado.id'),
							'user_id'         => $this->Auth->user('id'),
							'practice_id'     => $clave,
							'staterecord_id'  => 1,
							'fecha'           => $fecha_practica,
							'comments'        => $valor['comments'],							
					));
					$this->PeoplePractice->save();

					// Activo el Flag que determina que existe algo para cargar
					$evolucionActiva = true;
				}
			}


			//====================================================================			
			// Grabo Resultados, si existen
			//====================================================================			
			if (isset($this->data['Resultado']) and (!empty($this->data['Resultado']))  ){

				foreach($this->data['Resultado'] as $clave=>$valor) {

					$fecha_resultado = substr($valor['fecha'],6,4)."-".substr($valor['fecha'],3,2).'-'.substr($valor['fecha'],0,2).' 12:00:00';

					$this->Result->create();
					$this->Result->set(array(
							'id'              => 0,
							'person_id'       => $this->data['Evolution']['person_id'],
							'client_id'       => $this->Session->read('ClientesUsuarioLogueado.id'),
							'user_id'         => $this->Auth->user('id'),
							'practice_id'     => $clave,
							'staterecord_id'  => 1,
							'fecha_solicitud' => $fecha_resultado,
							'conclusion'      => $valor['comments'],
							'valor'           => $valor['valor'],
					));
					$this->Result->save();

					// Activo el Flag que determina que existe algo para cargar
					$evolucionActiva = true;
				}
			}


			//====================================================================			
			// Grabo Problemas, si existen
			//====================================================================			
			if (isset($this->data['Problemas']) and (!empty($this->data['Problemas']))  ){
				
				foreach($this->data['Problemas'] as $clave=>$valor) {


					// Si el Problema seleccionado no existe, lo cargo
					if($this->requestAction('/PeopleProblems/existeProblema/'.$this->data['Evolution']['person_id'].'/'.$clave) == "0"){

						$fecha_problema = substr($valor['fecha'],6,4)."-".substr($valor['fecha'],3,2).'-'.substr($valor['fecha'],0,2).' 12:00:00';

						$this->PeopleProblem->create();
						$this->PeopleProblem->set(array(
							'fecha_origen'    => $fecha_problema,
							'person_id'       => $this->data['Evolution']['person_id'],
							'client_id'       => $this->Session->read('ClientesUsuarioLogueado.id'),
							'user_id'         => $this->Auth->user('id'),
							'problem_id'      => $clave,
							'stateproblem_id' => $valor['stateproblem_id'],
							'tag_id'          => $valor['tag_id'],
							'staterecord_id'  => '1',
						));
						$this->PeopleProblem->save();

						// Activo el Flag que determina que existe algo para cargar
						$evolucionActiva = true;
					}
				}
			}
			
			//====================================================================			
			// Grabo Medicamentos, si existen
			//====================================================================			
			if (isset($this->data['Medicamentos']) and (!empty($this->data['Medicamentos']))  ){
				//pr($this->data['Medicamentos']); die();				
				foreach($this->data['Medicamentos'] as $clave=>$valor) {

					$fecha_inicio = substr($valor['fecha_inicio'],6,4)."-".substr($valor['fecha_inicio'],3,2).'-'.substr($valor['fecha_inicio'],0,2);

					if($valor['indicacion_id'] == 1){ // Limitada
						$fecha_fin = substr($valor['fecha_fin'],6,4)."-".substr($valor['fecha_fin'],3,2).'-'.substr($valor['fecha_fin'],0,2);
					} elseif($valor['indicacion_id'] == 2){ // Crónicas
						$fecha_fin = '2038-1-1';
					} else {
						$fecha_fin = $fecha_inicio;
					}

					$this->PeopleVademecum->create();
					$this->PeopleVademecum->set(array(
						'fecha_inicio'    => $fecha_inicio,
						'fecha_fin'       => $fecha_fin,
						'person_id'       => $this->data['Evolution']['person_id'],
						'client_id'       => $this->Session->read('ClientesUsuarioLogueado.id'),
						'user_id'         => $this->Auth->user('id'),
						'vademecum_id'    => $clave,
						'nombre_vademecum' => $valor['nombre_vademecum'],
						'typeindicacionmedicamento_id' => $valor['indicacion_id'],
						'posologia'       => $valor['posologia'],
						'staterecord_id'  => '1',
						'prescription_id' => 0,
						'cantidad_indicada' => $valor['cantidad_indicada'],
						'unidad_id'       => $valor['unidad_id'],
						'via_id'          => $valor['via_id'],
						'frecuencia_id'   => $valor['frecuencia_id'],
						'frecuencia'      => $valor['frecuencia']
					));
					$this->PeopleVademecum->save();

					// Activo el Flag que determina que existe algo para cargar
					$evolucionActiva = true;
				}
			}

			//====================================================================			
			// Hay adjuntos??
			//====================================================================			
			$DestinoTemporal = ROOT.DS.APP_DIR.DS."webroot".DS."files".DS."temp";
			$DestinoFinal    = ROOT.DS.APP_DIR.DS."webroot".DS."uploads";
		
			$key_attach = $this->data['Adjuntos'];
			$adjuntos = $this->AdjuntosTmp->find('all', array('conditions' => array('AdjuntosTmp.key_attach' => $key_attach) ));
			
			if (!empty($adjuntos)) {
			
				foreach ($adjuntos as $a){

					$archivo_origen = $DestinoTemporal.DS.$a['AdjuntosTmp']['adjunto'];
					$archivo_final  = $DestinoFinal.DS.$a['AdjuntosTmp']['adjunto'];
				
					if (copy("$archivo_origen","$archivo_final")) {
						unlink("$archivo_origen");
					}
				
					$this->Adjunto->create();
					$this->Adjunto->set(array(
						'id'         => 0,
						'user_id'    => $a['AdjuntosTmp']['user_id'],
						'client_id'  => $a['AdjuntosTmp']['client_id'],
						'person_id'  => $a['AdjuntosTmp']['person_id'],
						'nombre'     => $a['AdjuntosTmp']['nombre'],
						'comentario' => $a['AdjuntosTmp']['comentario'],
						'adjunto'    => $a['AdjuntosTmp']['adjunto'],
						'size_kb'	 => $a['AdjuntosTmp']['size']/1024, 
						'fecha'      => $a['AdjuntosTmp']['fecha']
					));
					$this->Adjunto->save();

					// Borro el archivo temporal
					$this->AdjuntosTmp->delete($a['AdjuntosTmp']['id']);

					$evolucionActiva = true;
				}
			}
		
			//====================================================================			
			// Grabo la Evolucion si no esta vacia
			//====================================================================	
			if($retorno!='dashboard'){			
				if($evolucion_grabada == true){
				

					if($turno_id>0){
						// Turn.stateturn_id = 5 => Atendido
						$hora_atendido = date("Y-m-d H:i:s");
						$sql = "update turns set stateturn_id='5', hora_atendido='$hora_atendido' where id='$turno_id' ";
						$this->Turn->query($sql);
					}
					$this->Session->setFlash(__('La evolución ha sido cargada', true));
				}else{
					if($evolucionActiva == true){
						if($turno_id>0){
							// Turn.stateturn_id = 5 => Atendido
							$hora_atendido = date("Y-m-d H:i:s");
							$sql = "update turns set (stateturn_id='5', hora_atendido='$hora_atendido') where id='$turno_id' ";
							$this->Turn->query($sql);
						}
					
						$this->Session->setFlash(__('La evolución ha sido cargada', true));
					}else{
						$this->Session->setFlash(__('La evolución no puede estar vacia.', true), 'default', array('class' => 'error-message'));
					}
				}
				
				//====================================================================			
				// Si es una Evolucion Rapida
				//====================================================================			
				if(isset($this->data['Evolution']['esQuick']) and $this->data['Evolution']['esQuick'] == "1"){
					$this->redirect($this->referer());
				}else{
					$this->redirect('/people/view/'.$this->data['Evolution']['person_id'].'/3');
				}
				
			} else {
				$this->redirect('/dashboards');
			}
	
			exit;
		}

		if (!$id_paciente) {
			exit;
		}

		$people = $this->Person->find('list', array(
						'conditions' => array('Person.id' => $id_paciente),
						'fields' => array('Person.id', 'Person.full_name')
		) );

		$this->set('id_paciente', $id_paciente);
		$this->set('turno_id', $turno_id);
		$this->set(compact('people'));
	}



	function recetario(){

		$fecha_evolucion = date("Y-m-d H:i:s");	
		if (!empty($this->data)) {
	
			$id_paciente = $_POST['id_paciente'];
			$datos_persona = $this->Person->read(null, $id_paciente);			
			$nombre_paciente = $datos_persona['Person']['full_name'];
			
			$client_id   = $this->Session->read('ClientesUsuarioLogueado.id');
			$user_id     = $this->Auth->user('id');
			
	
	
			//pr($this->data); die();
	
			//====================================================================			
			// Grabo Medicamentos, si existen
			//====================================================================			
			if (isset($this->data['Medicamentos']) and (!empty($this->data['Medicamentos']))  ){
				
				//-----------------------------------------------------------------
				//                                             Creo la prescripcion
				//-----------------------------------------------------------------
				$Prescription['id']        = 0;
				$Prescription['name']      = $nombre_paciente.' - ('.date("Y/m/d").')';
				$Prescription['user_id']   = $user_id;
				$Prescription['client_id'] = $client_id;
				$Prescription['person_id'] = $id_paciente;
				$Prescription['tipo_prescripcion'] = 'medicamentos';
				
				$this->loadModel('Prescription');
				$this->Prescription->save($Prescription);
				$prescription_id = $this->Prescription->getInsertID();
				//pr($this->data['Medicamentos']);
				foreach($this->data['Medicamentos'] as $clave=>$valor) {

					$fecha_inicio = substr($valor['fecha_inicio'],6,4)."-".substr($valor['fecha_inicio'],3,2).'-'.substr($valor['fecha_inicio'],0,2);

					if($valor['indicacion_id'] == 1){ // Limitada
						$fecha_fin = substr($valor['fecha_fin'],6,4)."-".substr($valor['fecha_fin'],3,2).'-'.substr($valor['fecha_fin'],0,2);
					} elseif($valor['indicacion_id'] == 2){ // Crónicas
						$fecha_fin = '2038-1-1';
					} else {
						$fecha_fin = $fecha_inicio;
					}

					$this->PeopleVademecum->create();
					$this->PeopleVademecum->set(array(
						'fecha_inicio'    => $fecha_inicio,
						'fecha_fin'       => $fecha_fin,
						'person_id'       => $id_paciente,
						'client_id'       => $client_id,
						'user_id'         => $user_id,
						'vademecum_id'    => $clave,
						'nombre_vademecum' => $valor['nombre_vademecum'],
						'typeindicacionmedicamento_id' => $valor['indicacion_id'],
						'posologia'       => $valor['posologia'],
						'staterecord_id'  => '1',
						'prescription_id' => $prescription_id,
						'cantidad_indicada' => $valor['cantidad_indicada'],
						'unidad_id'       => $valor['unidad_id'],
						'via_id'          => $valor['via_id'],
						'frecuencia_id'   => $valor['frecuencia_id'],
						'frecuencia'      => $valor['frecuencia']
					));
					$this->PeopleVademecum->save();

				}
			}

		}
	
		$this->redirect('/people/view/'.$id_paciente.'/3');
		die();
	}


	function indicaciones(){
		//---------------------------------------------------------------
		// Graba las indicaciones de practicas generadas desde el 
		// recetario de indicaciones
		//---------------------------------------------------------------
		$fecha_evolucion = date("Y-m-d H:i:s");	
		if (!empty($this->data)) {
	
			$id_paciente     = $_POST['id_paciente'];
			$datos_persona   = $this->Person->read(null, $id_paciente);			
			$nombre_paciente = $datos_persona['Person']['full_name'];
			
			$client_id       = $this->Session->read('ClientesUsuarioLogueado.id');
			$user_id         = $this->Auth->user('id');
			
	
	
			//pr($this->data); die();
	
			//====================================================================			
			// Grabo Practicas, si existen
			//====================================================================			

			if (isset($this->data['Practicas']) and (!empty($this->data['Practicas']))  ){
				
				//-----------------------------------------------------------------
				//                                             Creo la prescripcion
				//-----------------------------------------------------------------
				$Prescription['id']        = 0;
				$Prescription['name']      = $nombre_paciente.' - ('.date("Y/m/d").')';
				$Prescription['user_id']   = $user_id;
				$Prescription['client_id'] = $client_id;
				$Prescription['person_id'] = $id_paciente;
				$Prescription['tipo_prescripcion'] = 'practicas';
				
				
				$this->loadModel('Prescription');
				$this->Prescription->save($Prescription);
				$prescription_id = $this->Prescription->getInsertID();
				
				
				foreach($this->data['Practicas'] as $clave=>$valor) {

					list($dia,$mes,$ano) = explode('/',$valor['fecha']);
					$fecha = $ano."-".$mes.'-'.$dia.' 10:00:00';
					//echo $fecha; die();
					//$fecha = date("Y-m-d");	

					$this->PeoplePractice->create();
					$this->PeoplePractice->set(array(
						'person_id'     	=> $id_paciente,
						'client_id'     	=> $client_id,
						'user_id'       	=> $user_id,
						'practice_id'   	=> $clave,
						'prescription_id' 	=> $prescription_id,
						'staterecord_id'  	=> 1,
						'fecha'    			=> $fecha,	
						'comments' 			=> $valor['comments'],	
						'ficha_id'    		=> 0
					));
					$this->PeoplePractice->save();

				}
			} //endif isset Practicas

		}
	
		$this->redirect('/people/view/'.$id_paciente.'/3');
		die();
	}


	
	function parenteral(){

		$fecha_evolucion = date("Y-m-d H:i:s");	
		
		if($_POST){

		
			$id_paciente      = $_POST['id_paciente'];
			$nombre_vademecum = $_POST['nombre_vademecum'];
			$datos_persona    = $this->Person->read(null, $id_paciente);			
			$nombre_paciente  = $datos_persona['Person']['full_name'];
			
			$client_id   = $this->Session->read('ClientesUsuarioLogueado.id');
			$user_id     = $this->Auth->user('id');
			
	
			//====================================================================			
			// Grabo Medicamentos, si existen
			//====================================================================			
			/* pr($_POST)
				[medicamento] => test 2
				[medicamento_id] => 2
				[texto_medicamento_seleccionado] => test 2
				[volumen_id] => 1
				[cloruro_sodio] => 3
				[cloruro_potasio] => 2
				[sulfato_magnesio] => 2
				[otro] => 2
				[medio_id] => 2
				[via_id] => 6
				[observaciones] => 23
				[id_paciente] => 3
				[vademecum_parenteral] => Vademecumparental
			*/

			$this->PeopleVademecum->create();
			$this->PeopleVademecum->set(array(
					'person_id'       => $id_paciente,
					'client_id'       => $client_id,
					'user_id'         => $user_id,
					'staterecord_id'  => '1',					
					'vademecum_id'    => $_POST['medicamento_id'],
					'via_id'          => $_POST['via_id'],
					'volumen_id'	  => $_POST['volumen_id'],
					'cloruro_sodio'   => $_POST['cloruro_sodio'],
					'cloruro_potasio' => $_POST['cloruro_potasio'],
					'sulfato_magnesio' => $_POST['sulfato_magnesio'],
					'otro'			  => $_POST['otro'],
					'medio_id'		  => $_POST['medio_id'],
					'observaciones'   => $_POST['observaciones'],
					'nombre_vademecum'=> $_POST['nombre_vademecum']
			));
			$this->PeopleVademecum->save();

		}
	
		$this->redirect('/people/view/'.$id_paciente.'/3');
		die();
	}
	



	
	
	function valorconsulta($id = 0,$turno_id = 0) {

		$asocia_financiador_consulta = $this->_accede('asocia_financiador_consulta','retorna');
		$this->set('asocia_financiador_consulta',$asocia_financiador_consulta);

		$this->Person->recursive = 0;
		if (!$id) {
			$this->Session->setFlash(__('Invalid person', true));
			$this->redirect('/dashboards');
		}

		$datos_persona = $this->Person->read(null, $id);		
		$this->set('persona', $datos_persona);
		//pr($datos_persona);

		// Obtengo las Obras Sociales del Paciente
		$options      = array('conditions' => array('InsurancesPerson.person_id' => $id));
		$insurances_paciente = $this->InsurancesPerson->find('all', $options);
		$this->set('insurances_paciente', $insurances_paciente);
//		pr($insurances_paciente);
		
		//-------------------------------------------------------------------------------------------------------------------
		//---------------------------------------------------------------------------------- Obtengo Financiadores del medico
		//-------------------------------------------------------------------------------------------------------------------
		$id_user = $this->Session->read('Auth.User.id');
		$this->loadModel('InsurancesUser');
		$financiadores = $this->InsurancesUser->find('all', array(
						'conditions' => array(
											'InsurancesUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
											'InsurancesUser.user_id'   => $id_user,
										),
						'order'		=> array('InsurancesUser.insurance_id' => 'ASC', 'InsurancesUser.plan' => 'ASC')

		) );
		$this->set('financiadores', $financiadores);
		//pr($financiadores);

		//-------------------------------------------------------------------------------------------------------------------
		//-------------------------------------------------------------------------------------- Obtengo Productos del medico
		//-------------------------------------------------------------------------------------------------------------------
		$this->loadModel('ProductsUser');
		$productos = $this->ProductsUser->find('all', array(
						'conditions' => array(
											'ProductsUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
											'ProductsUser.user_id'   => $id_user,
										)
		) );		
		$this->set('productos', $productos);
		//pr($productos);


		// Inicializo el Arreglo de OOSS
		$os = array();
		$x=0;

		foreach($insurances_paciente as $ip){
			$arreglo_aux_ooss   = $this->Insurance->read(null, $ip['InsurancesPerson']['insurance_id']);
			$os[$x]['ooss']     = $arreglo_aux_ooss['Insurance']['name'];
			$os[$x]['plan']     = $ip['InsurancesPerson']['nombre_plan'];
			$os[$x]['afiliado'] = $ip['InsurancesPerson']['nro_afiliado'];
			$x++;
		}
		//pr($insurances_paciente);
		$this->set('ooss_paciente', $os);
		$this->set('person', $datos_persona);
		$this->set('turno_id', $turno_id);

		
	}
	
	
}
?>